import * as util from '@/utils/util'

/**
 * 显示成功提示框
 */
export const showSuccess = (msg, callback) => {
  uni.showToast({
    title: msg,
    icon: 'success',
    mask: true,
    duration: 1500,
    success() {
      callback && callback()
    }
  })
}

/**
 * 显示失败提示框
 */
export const showError = (msg, callback) => {
  uni.showModal({
    title: '友情提示',
    content: msg,
    showCancel: false,
    success(res) {
      callback && callback()
    }
  })
}

/**
 * 显示纯文字提示框
 */
export const showToast = (msg, duration = 1500, mask = true) => {
  uni.showToast({
    title: msg, // 提示的内容
    icon: 'none',
    mask, // 是否显示透明蒙层，防止触摸穿透
    duration // 提示的延迟时间，单位毫秒，默认：1500  
  })
}

/**
 * tabBar页面路径列表 (用于链接跳转时判断)
 * tabBarLinks为常量, 无需修改
 */
export const getTabBarLinks = () => {
  const tabBarLinks = [ ]
  return tabBarLinks
}

/**
 * 生成完整的H5地址 [带参数]
 * @param {string} h5Url H5访问地址
 * @param {string} path 页面路径
 * @param {object} params 页面参数
 * @return {string}
 */
export const buildUrL = (h5Url, path, params) => {
  let complete = h5Url
  if (!util.isEmpty(path)) {
    complete += '#/' + path
    const shareParamsStr = getShareUrlParams(params)
    if (!util.isEmpty(shareParamsStr)) {
      complete += '?' + shareParamsStr
    }
  }
  return complete
}

/**
 * 生成转发的url参数(string格式)
 */
export const getShareUrlParams = (params) => {
  return util.urlEncode({
    // refereeId: store.getters.userId, // 推荐人ID
    ...params
  })
}

/**
 * 跳转到指定页面url
 * 支持tabBar页面
 * @param {string}  url   页面路径
 * @param {object}  query 页面参数
 * @param {string}  modo  跳转类型(默认navigateTo)
 */
export const navTo = (url, query = {}, modo = 'navigateTo') => {
  if (!url || url.length == 0) {
    return false
  }
  // tabBar页面, 使用switchTab
  if (util.inArray(url, getTabBarLinks())) {
    uni.switchTab({
      url: `/${url}`
    })
    return true
  }
  // 生成query参数
  const queryStr = !util.isEmpty(query) ? '?' + util.urlEncode(query) : ''
  // 普通页面, 使用navigateTo
  modo === 'navigateTo' && uni.navigateTo({
    url: `/${url}${queryStr}`
  })
  // 特殊指定, 使用redirectTo
  modo === 'redirectTo' && uni.redirectTo({
    url: `/${url}${queryStr}`
  })
  return true
}



//小程序支付
export const wePay = (data, success, fail) => (
	uni.requestPayment({
		provider: data.provider,
		timeStamp: data.timeStamp,
		nonceStr: data.nonceStr,
		package: data.package,
		signType: data.signType,
		paySign: data.paySign,
		success(res) {
			success(JSON.stringify(res));
		},
		fail(err) {
			fail(JSON.stringify(err))
		},
		complete: () => {
			setTimeout(function () {
				uni.hideLoading();
			}, 250);
		}
	})
)
 
// 微信app支付
export const wxAppPay = (data, success, fail) => {
	let obj = {
		appid: data.appId,
		noncestr: data.nonceStr,
		package: 'Sign=WXPay', // 固定值，以微信支付文档为主
		partnerid: data.partnerid,
		prepayid: data.prepayid,
		timestamp: data.timestamp,
		sign: data.sign // 根据签名算法生成签名
	};

	let orderInfo = JSON.stringify(obj);

	uni.requestPayment({
		provider: 'wxpay',
		orderInfo: orderInfo, //微信、支付宝订单数据
		success: res => {
			success(JSON.stringify(res))
		},
		fail: (err) => {
			fail(JSON.stringify(err))
		},
		complete: () => {
			setTimeout(function () {
				uni.hideLoading();
			}, 250);
		}
	})
}

// 支付宝app支付
export const aliAppPay = (data, success, fail) => {
	uni.requestPayment({
		provider: 'alipay',
		orderInfo: data,
		success: res => {
			success(JSON.stringify(res))
		},
		fail: (err) => {
			fail(JSON.stringify(err))
		},
		complete: () => {
			setTimeout(function () {
				uni.hideLoading();
			}, 250);
		}
	});
}
